{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Paraxial Surfaces\n",
    "\n",
    "This example shows how paraxial surfaces can be defined in Optiland. These are defined solely based on their focal length and can be used for first order system layouts."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "from optiland import optic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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fvc7HXnkkbF2xrjwBAIBXXrppbr33ntjH8xd3n//fX344YeMawGqr6/XT37yEx133HGSouO0cOFCnXzyyXr99dd1wgknMK4F6MEHH9Rf/vIXffHFF9pnn31UX18fC8u8VwtfKuOX72NM+d8gMtGFQZL+xAcqSbrkkks0btw4/fznP+/xONXV1ZKkzZs3x9pCoZCampo0YcKEgX0RSEt1dXXCeEnS1q1bVVVVpaqqqhz1Cv3V1NSkk046SXfccYdOPvnkhG29jbEk3pd56qWXXlJLS4vuvfde1dbWqra2Vt98840ee+wxnX322Wpubt7luO6zzz656Db6kOwPr64Soa5ya8a1sLS2tur666/X3LlzY+MzatQoLVy4UB999JHee+89xrTApfIZWl1drebm5oRz6/Lpc5ZQlYceeOABbdq0SYsXL461/fnPf45NbU6dOlWS9MEHH8S2r1q1SpZlaebMmYPbWaSktrY2Ybwkqa6ujvEqMBdeeKFOP/30hOtr/PGPf5QUHePNmzcn1HXX1dVp5MiRmjRp0qD3FX079dRTtX79er399tuxnz333FOXXnqp1qxZowULFqi2tlYfffRRwh/pdXV1OuywwzRs2LAc9h69OeSQQ2LnHnfpel92/eHFuBaWjo4OBYPBHtecip/BYEwLWyqfobW1tZKi6w3E7+NyuXTMMccMboeTydm6g0hq3bp1prS01CxatMgsW7bMLFu2zDz++OOmoqLCNDQ0xPY76aSTzNSpU01HR4cxxpjzzz/fzJo1K0e9Rl+6rku1bNkyY0x06fzS0lLzzjvv5LZjSNnTTz9tdt99d/PMM8/E3pu33XabmTx5sjHGmObmZrPHHnuYK6+80hgTvYbK/vvvb+6///7cdRr9Nnr0aHPzzTfH7n/11VemtLTUPPDAA8YYY+rr681uu+1mnn322Rz1EH154oknjNPpNO+++64xJnotmxkzZpja2trYEuuMa+GZPn262W+//czmzZuNMcZ0dHSYE044wdTU1BjLshjTAuH3+015ebk56qijEi55kMpnaCQSMZMmTTKnnXaasSzLhMNhc9xxx5n58+cP9stIilCVZ6644gojKelPfKjatm2bmTNnjjnggAPM1KlTzUUXXWQaGxtz13H06amnnjITJ04006ZNM0cccYR5/vnnc90l9EPXBQu7/3SFKmOMqaurM0cddZQ59NBDTU1Njbnzzjt7vU4O8s8vf/lLI8nss88+5v3334+1r1y50kyZMsXU1taampoa85vf/CaHvUQqHn30UXPQQQeZI444whx00EHmRz/6UcJnqDGMa6HZvn27ufzyy823vvUtM23aNFNTU2OuuOIKs23bttg+jGn+2rBhg5k2bZoZMWJE7POzuro64cK9qXyGrl271nz/+983Bx98sDn88MPNVVddZQKBwGC/nKRsxnSbSwUAAAAApIxzqgAAAAAgA4QqAAAAAMgAoQoAAAAAMkCoAgAAAIAMEKoAAAAAIAOEKgAAAADIAKEKAAAAADJAqAIAAACADBCqAAAAACADhCoAwJBx8cUXq7KyUtOnT9cpp5wy6M9/yimnaPr06aqsrNTFF1886M8PABgYzlx3AACA/vrqq680fvx4DRs2TIcccojs9uh3hP/4xz/U2Nio1atXa//990967JQpU/Tqq68OYm93Wr58uSRp+vTpOXl+AMDAIFQBAAqSzWbTX//6V02ePFmStGHDBu2///666KKLeg1UAAAMBMr/AAAFx+v16pJLLokFKkm6/vrrZbPZ9LOf/SyHPQMADEWEKgBAwRk1apQee+yx2P133nlHS5cu1fXXX68999wz5cdpa2vTrFmzZLPZ9MILL+imm27S1KlTNW7cOL388stasWKF5s6dq7333ltnnnmmwuGwJGn16tU6+OCD5XQ69cknn2jevHmaMGGCDj/8cH399df69a9/rTPOOEOjRo3SPffck/XXDwDIL4QqAEDBu/rqqzV27Fj99Kc/7ddxpaWleuCBByRJixYt0o033qi3335bo0eP1jnnnKPPPvtM//Vf/6WXXnpJzzzzjJ577jlJ0oEHHqgrr7xSkUhES5cu1a9+9Su99957Wr16tY499lhNmTJFzzzzjG699VbdfPPN+uabb7L+mgEA+YNQBQAoaH/4wx/01ltv6Z577lFJSUm/j3c6o6cXX3bZZSorK5PNZtORRx4pSZo3b54kaeLEiaqqqtJnn33W47gFCxZIkoYPH64DDjhANTU1mjp1qiRp2rRpikQi+uKLL9J/gQCAvEeoAgAUrPb2dl1//fWqra3V2WefndFjlZeXx277fL6E+13bu8r/Uj2u63ay4wAAxYPV/wAABeu+++7T+vXr9d///d+y2WxZe9xkj5XK43ffJ5t9AgDkL2aqAAAFadOmTfrFL36hc845R7W1tbH2yy67TK+99loOewYAGGoIVQCAgnTDDTfIsqyE1fUaGxv13HPPybKslB8nEAhIkoLBYKytra0t4X5XWygU6tdxbW1tkpRwHACg+BCqAAAF59NPP9WSJUvk9Xp1wQUXaPr06Zo+fbomTpyo7du39+uxFi5cKEm68847tXXrVq1atUpPPvmkvvnmG/3bv/2bJOkXv/iFtm7dqiVLluiDDz7Qhg0b9PDDD0uS5s+fLym6YEZdXZ1efPFFvfzyyzLG6Nprr5Uk3XHHHWpoaMjWywcA5BmbMcbkuhMAAAyGiy++WF999ZVeffXVnPZj+vTpGjdunH7729/mtB8AgOxgpgoAAAAAMkCoAgAAAIAMsKQ6AGBI+fDDDzV9+nT5fD4tX758UJ/7lFNOUUtLiz788EONGzduUJ8bADBwOKcKAAAAADJA+R8AAAAAZIBQBQAAAAAZIFQBAAAAQAYIVQAAAACQAUIVAAAAAGSAUAUAAAAAGSBUAQAAAEAGCFUAAAAAkIH/By6YnAGrlVPjAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lens = optic.Optic()\n",
    "\n",
    "# add surfaces\n",
    "lens.add_surface(index=0, thickness=np.inf)\n",
    "lens.add_surface(index=1, surface_type=\"paraxial\", thickness=100, f=100, is_stop=True)\n",
    "lens.add_surface(index=2)\n",
    "\n",
    "# add aperture\n",
    "lens.set_aperture(aperture_type=\"EPD\", value=20)\n",
    "\n",
    "# add field\n",
    "lens.set_field_type(field_type=\"angle\")\n",
    "lens.add_field(y=0)\n",
    "# lens.add_field(y=5)\n",
    "\n",
    "# add wavelength\n",
    "lens.add_wavelength(value=0.55, is_primary=True)\n",
    "\n",
    "lens.draw(num_rays=6)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
